איידי שהוא AUTO_INCREMENT
טקסט
ומזהה של סיפור .
הקטע שכל אחד מוסיף שורה לסיפור ולאחר 8 שורות לדוגמא המזהה של הסיפור עולה באחד וכך נוצר עוד סיפור שהמזהה שלו הוא +1 מהסיפור הקודם .
איך אפשר לעשות את זה? אפשר כיוון ?
אני משתמש בMySqli ...
חשבתי אולי על לבדוק מה ההכנסה האחרונה למסד . לראות מה המזהה של הסיפור , ואז לראות כמה שורות יש עם המזהה הזה . אם גדול מ8 אז ההכנסה תהיה עם המזהה הקודם +1 ...
אבל זה דיי ארוך ומסורבל ...
11 תשובות
אין לזה פתרון מובנה כלשהו במסד ובשביל זה יש לרשותך PHP - לכתוב את הוגיקה שאתה רוצה.
גם הפתרון לא כזה ארוך. בסה"כ צריך לעשות שליפה אחת שתבדוק כמה שורות כבר קיימות עבור אותו סיפור.
אם עבור הסיפור שאתה כרגע עורך יש כבר 8 שורות - צריך להניס לטבלה הסיפורים רשומה חדשה, לקחת את האידי שלה עם last_insert_id ולהישתמש בו בתור מזהה סיפור בהכנסה של השורה.
עשיתי ככה ומשום מה זה לא עובד ... הוספתי ELSEים והכל אבל עדיין לא...
עשיתי == שתיים כי רציתי שיעלה שורה עכשיו ולא לחכות ל8 שורות..
$row = $result->fetch_assoc();
$result->close();
}else echo "error 1 ";
if ($result = $mysqli->query('SELECT story_id FROM book WHERE story_id = "'.$row["story_id"].'" ')){
if($result->num_rows == 2 ) $story_id = $row["story_id"] + 1 ; else $story_id = $row["story_id"];
echo "<p><h4>שורה אחרונה מסיפור מס ".sql_out($row["story_id"])." :
<span style='color:red'>".sql_out($row["text"])."...";
$result->close();
}else echo "error 2 ";
if (isset($_POST["submit"]) && (!empty($_POST["line"])) ){
$line = trim($_POST["line"]);
$line = $mysqli->real_escape_string($line);
if(strlen($line) < 71){
if ($result = $mysqli->query('INSERT INTO book (text, story_id) VALUES ("'.$line.'", "'.$story_id.'")')){
echo "<h3>שורה חדשה הועלתה בהצלחה לסיפור מס ".$story_id."</h3>";
$result->close();
} else echo "error 3 ";
}else echo "הטקסט חייב להיות מקסימום 70 תווים ! ";
}
זו שאילת שבשליפה אחת תאפשר לך לשלוף גם את מספר הסיפור האחרון וגם את כמות השורות שיש באותו סיפור.
GROUP BY story_id ORDER BY story_id DESC LIMIT 1
תסתדר מכאן? אני לא מצליח לקרוא את הקוד שלך. הוא מבולגן מדי.
אפשר הסבר קצת ?
איך אני מוציא משאילתה הזאת ? כי הרי לא יעזור לעשות לדגומא
נכון ?
למה שלא תנסה ?
להדפיס את תוכן המערך אפשר באמצעות הפונקציה print_r.
מה שכן מאוד יעזור זה אם תתחיל לקרוא למשתנים בשמות ברורים, לא row ו result אלה last_story
mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 1 [type] => 0 )
איך הם יוכלו לעזור לי ?
רק num_rows יכול ....
אני חושב שטעית במשנתה שהיית אמור לעשות לו print_r . אתה לא חושב ?
+ שכחת לנסות להוציא נתונים מהשאילת בכלל.
הבנתי את הטעות שלי ...
אבל הcount לא כ"כ יעזור לי כי אני יכול עם הnum_rows לראות כמה יש ...
אבל אני אשאיר את זה איך שזה היה מקודם כי זה עובד :)
עכשיו יש לי עוד שאלה .
בסיידבר אני שולף את הסיפוורים האחרונים כלומר אני עושה שליפה רגילה ורושם "סיפור מס" ואז את הסיפור ... איך אני עושה שמספר לא יחזור על עצמו ? כי זה שולף שורה שורה וזה ישלוף ככה :
"סיפור מס 1
סיפור מס 1 " וכו כך 8 פעמים ... עד שיגיע לסיפור מספר שתיים ...
אפשר עזרה ?
לבדוק אם המספר מזהה של הסיפור כבר נשלף ואם כן אז לדלג עד שימצא מספר שונה ממנו.
למרות שבקום שלוש שאילתות אפשר לעשות אחת אתה עדיין מעדיף להשאיר את השלוש ?
------
ישלוף רק שורות עם story_id שהוא עדיין לא שלף.
---
בבקשה שאלות חדשות שים בתור שאלה חדשה באתר.
"לשלוף פעם אחת מכל סוג" היית כותרת שיכולה לעזור לאנשים אחריך למצוא את התשובה ישר.
אוקי... תודה רבה !
זה אני ממחשב אחר...